package com.ruoyi.vote.admin.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.vote.admin.domain.VoteActivity;
import com.ruoyi.vote.admin.domain.vo.VoteActivityVo;
import com.ruoyi.vote.admin.domain.bo.VoteActivityBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.vote.app.domain.request.VoteActivityReq;
import com.ruoyi.vote.app.domain.response.VoteActivityResp;

import java.util.Collection;
import java.util.List;

/**
 * 投票 - 活动管理Service接口
 *
 * @author 筑巢
 * @date 2023-07-17
 */
public interface IVoteActivityService {

    /**
     * 初始化活动缓存
     */
    void loadingActivityCache();

    /**
     * 活动详情
     */
    VoteActivityVo queryById(Long id);

    /**
     * 活动列表
     */
    TableDataInfo<VoteActivityVo> queryPageList(VoteActivityReq bo, PageQuery pageQuery);

    /**
     * 新增投票 - 活动管理
     */
    Boolean insertByBo(VoteActivityBo bo);

    /**
     * 修改投票 - 活动管理
     */
    Boolean updateByBo(VoteActivity bo);

    /**
     * 校验并批量删除投票 - 活动管理信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 更新所有活动排行榜
     */
    void calculateAndStoreAllRankings();

    /**
     * 更新活动排行榜
     * @param eventId
     * @return
     */
    Boolean calculateRankingByaId(String eventId);

    /**
     * 活动结算
     * @param eventId
     * @return
     */
    Boolean activitySettlement(String eventId);

    /**
     * 活动热度+1
     * @param id
     */
    void updateWelcomeOne(Long id);
}
